Software-defined networking (SDN) is a network architecture that aims at decoupling control plane functions from data plane functions such that separate apparatuses may be utilized for different functions. In the SDN architecture, network intelligence and states are logically centralized, and the underlying network infrastructure is abstracted from the applications. As a result, networking may be simplified and new applications become feasible. For example, network virtualization can be accomplished by implementing it in a software application where the control plane is separated from the data plane. Also, a network administrator of a SDN system may have programmable central control of network traffic without requiring physical access to the system's hardware devices. With these benefits, SDN architecture based systems (referred to as SDN systems or SDN networks exchangeably herein below) are gaining popularity among carriers and enterprises.
A SDN system typically includes one or more SDN controllers (also referred to as network controllers, the terms are used exchangeably herein below) and a set of network elements managed by the SDN controllers. An anomaly in a network element ideally should be remotely debugged outside of the network element as the network element is often deployed near a client of the SDN system thus harder to reach (e.g., requiring a truck roll). Thus, a troubleshooting apparatus may be deployed inside or coupled to a SDN controller as the SDN controller communicates with the network element continuously, and the SDN controller may cause changes to and gets information changes from the network element. Thus, a more centralized debugging through monitoring the communications between the SDN and the network element is preferable. However, in a SDN system, typically thousands even millions of messages are exchanged between the SDN controller and the network element, and it is challenging to debug and identify what may have caused the anomaly.